home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et-2_2.lha / et2.2 / src / Token.h < prev    next >
C/C++ Source or Header  |  1990-11-28  |  3KB  |  100 lines

  1. #ifndef Token_First
  2. #ifdef __GNUG__
  3. #pragma once
  4. #endif
  5. #define Token_First
  6.  
  7. #include "Rectangle.h"
  8.  
  9. enum EvtCursorDir {
  10.     eCrsUp,
  11.     eCrsDown,
  12.     eCrsLeft,
  13.     eCrsRight
  14. }; 
  15.  
  16. enum EventCodes {
  17.     eEvtNone        = -1,
  18.     eEvtAscFirst    = 0,
  19.     eEvtAscLast     = 127,
  20.     eEvtMetaFirst   = 128,   // returned if key depressed with 'Left' or 'Right' key
  21.     eEvtMetaLast    = 255,
  22.     eEvtPseudo      = 0x7f << 8,
  23.     eEvtLocMove     = eEvtPseudo + 0,
  24.     eEvtLocStill    = eEvtPseudo + 1,
  25.     eEvtEnter       = eEvtPseudo + 2,
  26.     eEvtExit        = eEvtPseudo + 3,
  27.     eEvtLocMoveBut  = eEvtPseudo + 4,
  28.     eEvtIdle        = eEvtPseudo + 5,
  29.     eEvtButtons     = eEvtPseudo + 32,
  30.         eEvtLeftButton  = eEvtButtons + 0,
  31.         eEvtMiddleButton= eEvtButtons + 1,
  32.         eEvtRightButton = eEvtButtons + 2,
  33.     eEvtPfkFirst    = eEvtPseudo + 42,
  34.         eEvtPfkLast     = eEvtPfkFirst + 64,
  35.     eEvtFirstCursorKey= eEvtPseudo + 128,
  36.         eEvtCursorUp    = eEvtFirstCursorKey + eCrsUp,
  37.         eEvtCursorDown  = eEvtFirstCursorKey + eCrsDown,
  38.         eEvtCursorLeft  = eEvtFirstCursorKey + eCrsLeft,
  39.         eEvtCursorRight = eEvtFirstCursorKey + eCrsRight,
  40.         eEvtLastCursorKey= eEvtCursorRight,
  41.     eEvtDamage  = eEvtPseudo + 250
  42. };
  43.  
  44. enum EventFlags {
  45.     eFlgNone        = 0,
  46.     
  47.     eFlgButDown     = BIT(0),
  48.     eFlgShiftKey    = BIT(1),
  49.     eFlgCntlKey     = BIT(2),
  50.     eFlgMetaKey     = BIT(3), // left or right keys on SUN-2 and SUN-3 keyboards 
  51.  
  52.     eFlgDamage1     = BIT(4),
  53.     eFlgDamage2     = BIT(5),
  54.     eFlgDamage3     = BIT(6),
  55.     eFlgDamage4     = BIT(7),
  56.     eFlgDamage5     = BIT(8)
  57. }; 
  58.   
  59. class Token {
  60. public:
  61.     short Code;   // enum EventCodes
  62.     short Flags;  // enum EventFlags
  63.     unsigned long At;
  64.     Point Pos;
  65.     Point ext;
  66.     
  67. public:
  68.     Token();
  69.     Token(EventFlags f, Rectangle &r);    // constructor for damage events
  70.     Token(EventCodes, EventFlags f= eFlgNone, Point pos= gPoint0);
  71.     
  72.     bool DoubleClick(Token &t);
  73.     bool IsAscii()
  74.     { return (bool) (Code >= eEvtAscFirst && Code <= eEvtAscLast); }
  75.     bool IsMeta()
  76.     { return (bool) (Code >= eEvtMetaFirst && Code <= eEvtMetaLast); }
  77.     bool IsControl()
  78.     { return (bool) (Code >= eEvtAscFirst && Code <= eEvtAscLast); }
  79.     bool IsKey()
  80.     { return (bool) (Code >= eEvtAscFirst && Code <= eEvtMetaLast); }
  81.     bool IsFunctionKey()
  82.     { return (bool) (Code >= eEvtPfkFirst && Code <= eEvtPfkLast); }
  83.     bool IsCursorKey()
  84.     { return (bool) (Code >= eEvtFirstCursorKey
  85.                         && Code <= eEvtLastCursorKey); }
  86.     bool IsMouseButton()
  87.     { return (bool) (Code >= eEvtButtons && Code <= eEvtRightButton); }
  88.     char MapToAscii();
  89.     Point CursorPoint();
  90.     EvtCursorDir CursorDir()
  91.     { return (EvtCursorDir)((EvtCursorDir)Code - eEvtFirstCursorKey); }
  92.     int FunctionCode()
  93.     { return Code - eEvtPfkFirst; }
  94.     Rectangle DamageRect()
  95.     { return Rectangle(Pos, ext); }
  96.     void Dump();
  97. };
  98.  
  99. #endif Token_First
  100.